package es.ucm.fdi.isbc.viviendas.representacion;

import jcolibri.cbrcore.Attribute;
import jcolibri.cbrcore.CaseComponent;

public class ExtrasFinca implements CaseComponent{

	private Integer id;
	private boolean ascensor;
	private boolean trastero;
	private boolean energiaSolar;
	private boolean servPorteria;
	private boolean parkingComunitario;
	private boolean garajePrivado;
	private boolean videoportero;
	
	public ExtrasFinca()
	{
		super();
	}
	public ExtrasFinca(int id)
	{
		super();
		this.id = id;
	}
	
	public ExtrasFinca(String stringRep)
	{
		String[] values = stringRep.split(",");
		id = Integer.valueOf(values[0]);
		ascensor = Boolean.valueOf(values[1]);
		trastero = Boolean.valueOf(values[2]);
		energiaSolar = Boolean.valueOf(values[3]);
		servPorteria  = Boolean.valueOf(values[4]);
		parkingComunitario = Boolean.valueOf(values[5]);
		garajePrivado = Boolean.valueOf(values[6]);
		videoportero = Boolean.valueOf(values[7]);
	}
	
	@Override
	public String toString() {
		return boolToString(ascensor) + "," + boolToString(trastero) + "," + boolToString(energiaSolar) + ","
				+ boolToString(servPorteria) + "," + boolToString(parkingComunitario) + "," + boolToString(garajePrivado)
				+ "," + boolToString(videoportero);
	}
	
	@Override
	public Attribute getIdAttribute() {
		return new Attribute("id", DescripcionVivienda.class);
	}
	
	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public boolean isAscensor() {
		return ascensor;
	}
	public void setAscensor(boolean ascensor) {
		this.ascensor = ascensor;
	}
	public boolean isTrastero() {
		return trastero;
	}
	public void setTrastero(boolean trastero) {
		this.trastero = trastero;
	}
	public boolean isEnergiaSolar() {
		return energiaSolar;
	}
	public void setEnergiaSolar(boolean energiaSolar) {
		this.energiaSolar = energiaSolar;
	}
	public boolean isServPorteria() {
		return servPorteria;
	}
	public void setServPorteria(boolean servPorteria) {
		this.servPorteria = servPorteria;
	}
	public boolean isParkingComunitario() {
		return parkingComunitario;
	}
	public void setParkingComunitario(boolean parkingComunitario) {
		this.parkingComunitario = parkingComunitario;
	}
	public boolean isGarajePrivado() {
		return garajePrivado;
	}
	public void setGarajePrivado(boolean garajePrivado) {
		this.garajePrivado = garajePrivado;
	}
	public boolean isVideoportero() {
		return videoportero;
	}
	public void setVideoportero(boolean videoportero) {
		this.videoportero = videoportero;
	}
	
	private String boolToString(boolean b) {
		if (b) return "Si";
		else return "No";
	}

	public String getExtras() {
		String extras=Integer.toString(this.id)+",";
		extras+=Boolean.toString(this.ascensor)+",";
		extras+=Boolean.toString(this.trastero)+",";
		extras+=Boolean.toString(this.energiaSolar)+",";
		extras+=Boolean.toString(this.servPorteria)+",";
		extras+=Boolean.toString(this.parkingComunitario)+",";
		extras+=Boolean.toString(this.garajePrivado)+",";
		extras+=Boolean.toString(this.videoportero);
		
		return extras;
	}
	public String imprimeExtrasCompra() {
		String extras= "ascensor: " + toSiNo(this.ascensor);
		extras+=", trastero: " + toSiNo(this.trastero);
		extras+=", energia solar: " + toSiNo(this.energiaSolar);
		extras+=", servicio porteria: " + toSiNo(this.servPorteria);
		extras+=", parking comunitario: " + toSiNo(this.parkingComunitario);
		extras+=", garaje privado: " + toSiNo(this.garajePrivado);
		extras+=", videoportero: " + toSiNo(this.videoportero)+".";
		
		return extras;
	}
	private String toSiNo(boolean b) {
		if (b) return "si";
		else return "no";
	}
}